Look for zstd before Clang
authorPino Toscano <pino@debian.org>
Thu, 19 Mar 2026 19:44:42 +0000 (20:44 +0100)
committerPatrick Franz <deltaone@debian.org>
Thu, 19 Mar 2026 19:44:42 +0000 (20:44 +0100)
Last-Update: 2025-07-19
Forwarded: not-needed

The story is more or less the following:
- LLVM ships its own Findzstd cmake find module from 16; this module defines
  2 targets: zstd::libzstd_shared and zstd::libzstd_static
- libzstd ships a cmake config module that defines 3 targets:
  zstd::libzstd_shared, zstd::libzstd_static, and zstd::libzstd
- the libzstd config module assumes that if one target is defined, all of them
  are, as if the config module itself was already run (i.e. multiple
  "find_package(zstd)" in a cmake project)
- in qttools, Clang is searched first, which in turns requires LLVM, and then
  libzstd

More details here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1073480#47

As workaround, look for libzstd before Clang: this way the proper zstd cmake
targets are defined, and the Findzstd cmake find module shipped with LLVM will
use them just fine without redefining them.

This should most likely be fixed on LLVM side.

Gbp-Pq: Name cmake-find-zstd-before-clang.diff

configure.cmake
src/designer/src/lib/CMakeLists.txt

index f0f8b18e744988a64e411bf30dd3b9275fde64c0..8ea05b732ed54fcdf80575580f6eac91e7c259ed 100644 (file)
@@ -6,6 +6,19 @@ include(${CMAKE_CURRENT_LIST_DIR}/src/qdoc/cmake/QDocConfiguration.cmake)
 
 #### Tests
 
+# HACK: look for libzstd before Clang/LLVM; this way all the right
+# libzstd cmake targets are defined, instead of the partial ones defined
+# by the Findzstd shipped with LLVM
+if(NOT TARGET WrapZSTD::WrapZSTD)
+    qt_find_package(WrapZSTD 1.3
+        PROVIDED_TARGETS
+            WrapZSTD::WrapZSTD
+            zstd::libzstd
+            zstd::libzstd_static
+            zstd::libzstd_shared
+    )
+endif()
+
 qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)
 
 if(TARGET WrapLibClang::WrapLibClang)
index 5513f2b29142d000d97dd62cf4207b51ef99f0bb..0cccbd5d91d8e69b4d1ae2aeb2ccc84433d96c2f 100644 (file)
@@ -421,15 +421,6 @@ endif()
 if(TARGET zstd::libzstd_static)
     qt_internal_disable_find_package_global_promotion(zstd::libzstd_static)
 endif()
-if(NOT TARGET WrapZSTD::WrapZSTD)
-    qt_find_package(WrapZSTD 1.3
-        PROVIDED_TARGETS
-            WrapZSTD::WrapZSTD
-            zstd::libzstd
-            zstd::libzstd_static
-            zstd::libzstd_shared
-    )
-endif()
 
 qt_internal_extend_target(Designer CONDITION QT_FEATURE_zstd
     LIBRARIES